package services

import models._
import scala.xml.Node

object PesquisadorService extends GenericService[Pesquisador] {

  val nomeEntidade = "pesquisador"

  def toObject(node: Node): Pesquisador = {
    val List(id, nome, email) = List("@id", "nome", "email").map { attr => (node \ attr).text }
    val usuario: Usuario = toUsuario((node \ "usuario")(0))
    val instituicao: Instituicao = InstituicaoService.toObject((node \ "instituicao")(0))
    val telefones = for (n <- (node \ "telefone")) yield InstituicaoService.toTelefone(n)
    Pesquisador(Some(id.toInt), nome, email, usuario, instituicao, telefones.toList)
  }

  private def toUsuario(node: Node): Usuario = {
    val List(login, senha) = List("login", "senha").map { attr => (node \ attr).text }
    Usuario(login, senha)
  }

}